// 用户
const { User }=require('../../model/user');

// 导入bcrypt
const bcrypt = require('bcrypt');

const login = async (req, res) => {
  // res.send(req)
  console.log(req.body)
  const { email, password } = req.body;
  // 如果用户没有输入邮件地址
	// if (email.trim().length == 0 || password.trim().length == 0) return res.status(400).send('<h4>邮件地址或者密码错误</h4>');
  if (email.trim().length == 0 || password.trim().length == 0) return res.status(400).render('admin/error', {msg: '邮件地址或者密码错误'});
  
  // 根据邮箱地址查询用户信息
	// 如果查询到了用户 user变量的值是对象类型 对象中存储的是用户信息
	// 如果没有查询到用户 user变量为空
	let user = await User.findOne({email});
	// 查询到了用户
	if (user) {
		// 将客户端传递过来的密码和用户信息中的密码进行比对
		// true 比对成功
    // false 对比失败
    console.log(user)
    /* const salt = await bcrypt.genSalt(10);
    const pass = await bcrypt.hash(user.password, salt);
		let isValid = await bcrypt.compare(password, pass); */
		let isValid = await bcrypt.compare(password, user.password);
		// 如果密码比对成功
		if ( isValid ) {
			// 登录成功
			// 将用户名存储在请求对象中
      // res.send(user.username);
      // 将用户名存储在请求对象中
			req.session.username = user.username;
			// 将用户角色存储在session对象中
			req.session.role = user.role;
			// res.send('登录成功');
			req.app.locals.userInfo = user;
			// 对用户的角色进行判断
			if (user.role == 'admin') {
				// 重定向到用户列表页面
				res.redirect('/admin/user');
			} else {
				// 重定向到博客首页
				res.redirect('/home/');
			}
		} else {
			// 信息不匹配
			res.status(400).render('admin/error', {msg: '邮箱地址或者密码错误'})
		}
	} else {
		// 没有查询到用户
		res.status(400).render('admin/error', {msg: '邮箱地址或者密码错误'})
	}

}

module.exports = login;
